prompt 住院通用接口发票信息获取:SP_ZY_TYJK_FPXXHQ
create or replace procedure SP_ZY_TYJK_FPXXHQ(
PJKRZID in varchar2 ,--入参:接口日志ID=BM_JKRZ00.JKRZID
PJKLXBM in varchar2 ,--入参:接口类型编码:YLmachine:自助机 YLwebservice:服务 TYJKwebservice:通用接口服务
PZDBH00 in varchar2 ,--入参:终端编码
PFUNCBM in varchar2 ,--入参:请求方法(编码)
PFUNCMC in varchar2 ,--入参:请求方法(名称)
PJKQQLX in varchar2 ,--入参:接口类型(HL7、XML)
PJKQQCS in varchar2 ,--入参:接口请求参数
PINXML1 in varchar2 ,--入参:备用参数01
PINXML2 in varchar2 ,--入参:备用参数02
PINXML3 in varchar2 ,--入参:备用参数03
PZXZT00 out varchar2 ,--出参:返还状态 1:成功 0:失败
PJKFHLX out varchar2 ,--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB
PRECNUM out varchar2 ,--出参:返回记录数据
PJKFHCS out varchar2 ,--出参:接口返回参数
PERRMSG out varchar2 --出参:错误信息,NULL表示正确
)
as
-- MODIFICATION HISTORY
-- Person Date Comments
-- zhangyc 2021.12.13 Create by [V9.0]通用接口 住院通用接口发票信息获取:SP_ZY_TYJK_FPXXHQ
-- zhangyc 2023.10.30 增加解析xtgzh0节点
-- --------- ---------- ---------------------
LS_ZXZT00 BM_JKRZ00.ZXZT00%type;--执行状态 1:成功 0:失败
LS_COUNT0 number(12,2); --临时变量
LS_LengNum number(12,2); --临时变量
LS_MSGSTR varchar2(100); --错误位置信息
LS_CZRQ00 char(8); --操作日期
LS_CZSJ00 char(8); --操作时间
LS_MAXNUM number(12); --最大长度
LS_XMLSTR varchar2(4000); --xml字符
LS_SQLSTR varchar2(4000);--Sql字符
LS_YNYGBH BM_TYCJMX.YNYGBH%type;--院内员工编码=bm_ygbm00.ygbh00
LS_SFQY00 BM_TYCJMX.SFQY00%type;--是否启用:1启用,0关闭
LS_HISKEY BM_TYCJMX.HISKEY%type;--接口请求HISKEY
LS_JKYXRQ BM_TYCJMX.JKYXRQ%type;--接口有效日期(格式:yyyymmdd)
LS_JKLXBH BM_ZFRZ00.JKLXBH%type;--接口类型编号
LS_JKLXMC BM_ZFRZ00.JKLXMC%type;--接口类型名称
LS_ZYGHID BM_ZFRZ00.ZYGHID%type;--住院(ZYID00)或门诊(GHID000)流水号
LS_ZYHGHH BM_ZFRZ00.ZYHGHH%type;--住院(ZYH000)或门诊(GHH000)号
LS_ZXZTBZ BM_ZFRZ00.ZXZTBZ%type;--状态标志 0:失败 1:成功
LS_TYJE00 BM_ZFRZ00.TYJE00%type;--停用金额
LS_MZZYBZ BM_ZFRZ00.MZZYBZ%type;--门诊住院表 0:门诊 1:住院
LS_JKFHCS BM_JKRZ00.JKFHCS%type;--返回参数值
LS_FHRQ00 BM_JKRZ00.FHRQ00%type;--返回操作日期
LS_FHSJ00 BM_JKRZ00.FHSJ00%type;--返回操作时间
LS_JKCODE BM_JKRZ00.JKCODE%type;--接口返回码
LS_JKFHLX BM_JKRZ00.JKFHLX%type;--接口返回类型 1:直接返回报文 2:中间表取值BM_JKRZMX 3:其它表取值 8:取QQCLOB
LS_CJLYBM BM_JKRZ00.CJLYBM%type;--厂家来源编码
LS_QDCJBM BM_JKRZ00.QDCJBM%type;--渠道编码
LS_QQCLOB BM_JKRZ00.QQCLOB%type;--请求报文CLOB类型
LS_FHCLOB BM_JKRZ00.FHCLOB%type;--返回报文CLOB类型
LS_CYZ000 number(5);--员工编码
LS_BRID00 number(10);--病人ID
LS_ZYID00 number(10);--住院id
LS_DJH000 number(10);--单据号
LS_JZDH00 number(10);--结账单号
LS_BRZHYE number(12,2);--病人账户总额
LS_DDLSH0 varchar2(30);--订单流水号
LS_invoicetype varchar2(10);--invoicetype:发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票
LS_fpxh00 varchar2(30);--fpxh00:发票序号
--请求参数
in_cjlybm varchar2(10);--cjlybm:厂家来源编码
in_qdcjbm varchar2(10);--qdcjbm:渠道编码
in_zdbh00 varchar2(20);--zdbh00:终端编号
in_czy000 varchar2(20);--czy000:操作员编码
in_zyh000 varchar2(20);--zyh000:住院号
in_brid00 varchar2(20);--brid00:病人id
in_zyid00 varchar2(20);--zyid00:住院id
in_jzdh00 varchar2(20);--jzdh00:结账单号
in_xtgzh0 varchar2(30);--xtgzh0:系统跟踪号
in_dzpjcj varchar2(10);--dzpjcj 电子票据厂家 BS:博思等
RYGBM BM_YGBM00%rowtype; --员工信息
RBRXX BM_BRXXB0%rowtype; --病人信息
LS_ZXData BM_JKRZ00.FHCLOB%type;--主项记录数据集
LS_MXData BM_JKRZ00.FHCLOB%type;--明细记录数据集
LS_dzpjjkbw BM_JKRZ00.FHCLOB%type;--电子票据请求报文
LS_ZXNum number(10);--主项记录数
LS_MXNum number(10);--明细记录数
cursor CUR_Data is
select a.*
from VW_ZY_FPXX00 a
where 1=1
and a.ZYID00=LS_ZYID00
and a.JZDH00=LS_JZDH00
;
cursor CUR_MX is
select a.*
from ZY_JZMX00 a
where 1=1
and a.JZDH00=LS_JZDH00
;
begin
LS_MsgStr:='变量初始化赋值';
LS_ZXZT00:='0';--执行状态 1:成功 0:失败
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
PJKFHLX:='1';--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB
PRECNUM:='0';--出参:返回记录数据
PJKFHCS:='';--出参:接口返回参数
PERRMSG:='';--出参:错误信息,NULL表示正确
LS_CZRQ00:=to_char(sysdate,'YYYYMMDD');
LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS');
LS_COUNT0:=0;--临时变量
LS_LengNum:=0; --临时变量
LS_MAXNUM:=4000;--最大长度
LS_XMLSTR:=''; --xml字符
LS_CYZ000:=0;--员工编码
LS_BRID00:=0;--病人ID
LS_DJH000:=0;--单据号
LS_QQCLOB:=null;--请求报文CLOB类型
LS_FHCLOB:=null;--返回报文CLOB类型
LS_MZZYBZ:='1';--门诊住院表 0:门诊 1:住院
LS_ZXData:=null;--主项记录数据集
LS_MXData:=null;--明细记录数据集
LS_dzpjjkbw:=null;--电子票据请求报文
LS_ZXNum:=0;--主项记录数
LS_MXNum:=0;--记录数
LS_JKFHCS:=null;--返回参数值
--步骤1:解析请求入参数
LS_MsgStr:='步骤1:解析请求入参数';
in_cjlybm:=trim(substrb(SF_XT_GETXMLSTR('cjlybm',PJKQQCS),1,10));--cjlybm:厂家来源编码 YH:易惠 YX:医信 YL:医联
in_qdcjbm:=trim(substrb(SF_XT_GETXMLSTR('qdcjbm',PJKQQCS),1,10));--qdcjbm:渠道编码 1:自助机,2:收费窗口,3:移动结算,4:多点结算 5:互联网结算 6:微信公众号 7:支付宝小程序
in_zdbh00:=trim(substrb(SF_XT_GETXMLSTR('zdbh00',PJKQQCS),1,20));--zdbh00:终端编号
in_czy000:=trim(substrb(SF_XT_GETXMLSTR('czy000',PJKQQCS),1,20));--czy000:操作员编码
in_zyh000:=trim(substrb(SF_XT_GETXMLSTR('zyh000',PJKQQCS),1,20));--zyh000:住院号
in_brid00:=trim(substrb(SF_XT_GETXMLSTR('brid00',PJKQQCS),1,20));--brid00:病人id
in_zyid00:=trim(substrb(SF_XT_GETXMLSTR('zyid00',PJKQQCS),1,20));--zyid00:住院id
in_jzdh00:=trim(substrb(SF_XT_GETXMLSTR('jzdh00',PJKQQCS),1,20));--jzdh00:结账单号
in_xtgzh0:=trim(substrb(SF_XT_GETXMLSTR('xtgzh0',PJKQQCS),1,30));--xtgzh0:系统跟踪号
in_dzpjcj:=trim(substrb(SF_XT_GETXMLSTR('dzpjcj',PJKQQCS),1,10));--dzpjcj 电子票据厂家 BS:博思等
in_dzpjcj:=nvl(in_dzpjcj,'BS');
--步骤3:数据校验
LS_MsgStr:='步骤3:数据校验';
if in_zdbh00 is null and (in_czy000 is null or in_czy000 in ('0')) then
PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功
PERRMSG:='请求报文中节点(zdbh00:终端编号、czy000:操作员编码)不能同时为空!';
return;
end if;
if in_zyh000 is null and (in_zyid00 is null or in_zyid00 in ('0')) then
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
PERRMSG:='请求报文中[zyh000:住院号、zyid00:住院id]节点值不能同时为空!';--出参:错误信息,NULL表示正确
return;
end if;
if (in_jzdh00 is null or in_jzdh00 in ('0')) and in_xtgzh0 is null then
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
PERRMSG:='请求报文中[jzdh00:结账单号、xtgzh0:系统跟踪号]节点值不能同时为空!';--出参:错误信息,NULL表示正确
return;
end if;
---获取通用场景明细BM_TYCJMX参数
LS_MsgStr:='获取通用场景明细BM_TYCJMX参数';
select count(1) into LS_COUNT0 from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM=nvl(in_cjlybm,'TY') and QDCJBM=nvl(in_qdcjbm,'TY');
begin
if nvl(LS_COUNT0,0)>0 then
select YNYGBH,SFQY00,HISKEY,JKYXRQ into LS_YNYGBH,LS_SFQY00,LS_HISKEY,LS_JKYXRQ
from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM=nvl(in_cjlybm,'TY') and QDCJBM=nvl(in_qdcjbm,'TY');
else
select YNYGBH,SFQY00,HISKEY,JKYXRQ into LS_YNYGBH,LS_SFQY00,LS_HISKEY,LS_JKYXRQ
from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM='TY' and QDCJBM='TY';
end if;
exception
when others then
LS_YNYGBH:=null;--院内员工编码=bm_ygbm00.ygbh00
LS_SFQY00:=null;--是否启用:1启用,0关闭
LS_HISKEY:=null;--接口请求HISKEY
LS_JKYXRQ:=null;--接口有效日期(格式:yyyymmdd)
end;
--校验是否开启以及有效时间
if LS_SFQY00 not in ('1') and LS_SFQY00 is not null then
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
PERRMSG:='接口编码:['||PFUNCBM||']接口名称:['||PFUNCMC||'],未开启,请联系管理员!';--错误信息
return;
end if;
if LS_JKYXRQ is not null and LS_CZRQ00>LS_JKYXRQ then
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
PERRMSG:='接口编码:['||PFUNCBM||']接口名称:['||PFUNCMC||'],已过期,有效期:['||LS_JKYXRQ||'],请联系管理员!';--出参:错误信息,NULL表示正确
return;
end if;
begin
LS_CYZ000:=to_number(nvl(in_czy000,0));--员工编码
exception
when others then
LS_CYZ000:=0;
end;
begin
LS_BRID00:=to_number(nvl(in_BRID00,0));--病人ID
exception
when others then
LS_BRID00:=0;--病人ID
end;
begin
LS_ZYID00:=to_number(nvl(in_ZYID00,0));--住院id
exception
when others then
LS_ZYID00:=0;--住院id
end;
begin
LS_JZDH00:=to_number(nvl(in_JZDH00,0));--结账单号
exception
when others then
LS_JZDH00:=0;--结账单号
end;
if nvl(LS_JZDH00,0)=0 and in_xtgzh0 is not null then
begin
select BRID00,ZYID00,JZDH00 into LS_BRID00,LS_ZYID00,LS_JZDH00 from SST_JSDP_JBXX_LOG where XTGZH0 =in_xtgzh0;
exception
when no_data_found then
LS_JZDH00:=0;
end;
end if;
if nvl(LS_JZDH00,0)>0 then
begin
select BRID00,ZYID00,JZDH00 into LS_BRID00,LS_ZYID00,LS_JZDH00 from ZY_JZB000 where JZDH00= LS_JZDH00;
exception
when no_data_found then
LS_BRID00:=0;
LS_ZYID00:=0;
LS_JZDH00:=0;
end;
end if;
--获取操作员
if nvl(LS_CYZ000,0)=0 and in_zdbh00 is not null then
begin
select YGBH00 into LS_CYZ000 from VW_SST_YGBMDYXX where ZZJBH0=in_zdbh00;
exception
when others then
LS_CYZ000:=0;
end;
end if;
if nvl(LS_CYZ000,0)=0 and nvl(LS_YNYGBH,0) not in (0) then
LS_CYZ000:=nvl(LS_YNYGBH,0);
end if;
--步骤5:基本信息字典
LS_MsgStr:='步骤4:基本信息字典';
if nvl(LS_CYZ000,0)>0 then
begin
select * into RYGBM from BM_YGBM00 aa where YGBH00 =LS_CYZ000;
exception
when others then
PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功
PERRMSG:='未找到有效的员工信息!YGBH00='||LS_CYZ000;
return;
end;
end if;
if nvl(LS_JZDH00,0)=0 then
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
PERRMSG:='接口请求失败,错误原因:HIS内部结账单号为0!';--出参:错误信息,NULL表示正确
return;
end if;
--获取发票信息(视图:vw_zy_fpxx00)
LS_invoicetype:='0';--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票
ls_fpxh00:=SF_ZY_GETPJXH(RYGBM.YGBH00,3,RYGBM.BMBH00);--fpxh00:发票序号
for REC in CUR_Data loop
if REC.ffbzbm is not null then
LS_invoicetype:='1';--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票
else
if REC.ybsm10 is not null then
LS_invoicetype:='2';--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票
end if;
end if;
LS_ZXData:=null;--记录数据集
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('invoicetype',LS_invoicetype,0,0,null,null);--invoicetype:发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('fpxh00',ls_fpxh00,0,0,null,null);--fpxh00:发票序号
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xm0000',REC.xm0000,0,0,null,null);--xm0000 姓名
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xb0000',REC.xb0000,0,0,null,null);--xb0000 性别
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('rycwh0',REC.rycwh0,0,0,null,null);--rycwh0 床位号
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zyh000',REC.zyh000,0,0,null,null);--zyh000 住院号
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('brid00',REC.brid00,0,0,null,null);--brid00 病人id
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zyid00',REC.zyid00,0,0,null,null);--zyid00 住院id
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybkh00',REC.ybkh00,0,0,null,null);--ybkh00 医保卡号
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybid00',REC.ybid00,0,0,null,null);--ybid00 医保ID
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqbq00',REC.dqbq00,0,0,null,null);--dqbq00 当前病区编码
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqbqmc',REC.dqbqmc,0,0,null,null);--dqbqmc 当前病区名称
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqks00',REC.dqks00,0,0,null,null);--dqks00 当前科室编码
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqksmc',REC.dqksmc,0,0,null,null);--dqksmc 当前科室名称
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ryrq00',REC.ryrq00,0,0,null,null);--ryrq00 入院日期
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cydjrq',REC.cydjrq,0,0,null,null);--cydjrq 出院登记日期
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cyrq00',REC.cyrq00,0,0,null,null);--cyrq00 出院日期
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zyts00',REC.zyts00,0,0,null,null);--zyts00 住院天数
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dbzbm0',REC.ffbzbm,0,0,null,null);--dbzbm0 单病种编码
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dbzmc0',REC.ffbzmc,0,0,null,null);--dbzmc0 单病种名称
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybzyh0',REC.ybzyh0,0,0,null,null);--ybzyh0 医保住院号
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybdjh0',REC.ybdjh0,0,0,null,null);--ybdjh0 医保收费单据号
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('fbxx00',REC.fbxx00,0,0,null,null);--fbxx00 费别信息
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('hjje00',REC.hjje00,0,0,null,null);--hjje00 费用总额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zfje00',REC.zfje00,0,0,null,null);--zfje00 自付金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jzje00',REC.jzje00,0,0,null,null);--jzje00 记账金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('gfje00',REC.gfje00,0,0,null,null);--gfje00 公费金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jmje00',REC.jmje00,0,0,null,null);--jmje00 优惠金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('grzhzf',REC.grzhzf,0,0,null,null);--grzhzf 医保账户支付
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('tcjjzf',REC.tcjjzf,0,0,null,null);--tcjjzf 统筹基金支付
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('gwybz0',REC.gwybz0,0,0,null,null);--gwybz0 公务员补助
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('sbtcjj',REC.sbtcjj,0,0,null,null);--sbtcjj 商保统筹基金
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('mzbzje',REC.mzbzje,0,0,null,null);--mzbzje 民政补助金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybzhye',REC.ybzhye,0,0,null,null);--ybzhye 医保账户余额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('yyzfje',REC.yyzfje,0,0,null,null);--yyzfje 医院支付金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jsbllx',REC.ybsm10,0,0,null,null);--jsbllx CDRG病例类型=YBSM10
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jsblmc',REC.jsblmc,0,0,null,null);--jsblmc C-DRG结算病历类型名称
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('yszje0',REC.yszje0,0,0,null,null);--yszje0 预交金总额(现金)
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zzzje0',REC.zzzje0,0,0,null,null);--zzzje0 预交金总额(转账)
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cyysk0',REC.cyysk0,0,0,null,null);--cyysk0 出院应收款
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cyytk0',REC.cyytk0,0,0,null,null);--cyytk0 出院应退款
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xjye00',REC.xjye00,0,0,null,null);--xjye00 现金余额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zzye00',REC.zzye00,0,0,null,null);--zzye00 转账余额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xjtkje',REC.xjtkje,0,0,null,null);--xjtkje 现金退款金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zztkje',REC.zztkje,0,0,null,null);--zztkje 转账退款金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xjbjje',REC.xjbjje,0,0,null,null);--xjbjje 现金补交金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zzbjje',REC.zzbjje,0,0,null,null);--zzbjje 转账补交金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('yhtkje',REC.yhtkje,0,0,null,null);--yhtkje 银行退款金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('wxtk00',REC.wxtk00,0,0,null,null);--wxtk00 微信退款金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zfbtk0',REC.zfbtk0,0,0,null,null);--zfbtk0 支付宝退款金额
LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybqtex',REC.ybqtex,0,0,null,null);--ybqtex 医保其他支付(扩展显示)
LS_ZXNum:=nvl(LS_ZXNum,0)+1;
if LS_invoicetype='1' then--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票
--发票项目类别 90:[医保返回]单病种超标床位费 91:[医保返回]单病种除外耗材 92:[医保返回]单病种标准
LS_MXData:=LS_MXData||'';
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00','92',0,0,null,null);--fpbh00 发票编码
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00','单病种标准',0,0,null,null);--fpmc00 发票名称
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',REC.YBYL04,0,0,null,null);--fphjje 发票合计金额
LS_MXData:=LS_MXData||'';
LS_MXData:=LS_MXData||'';
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00','91',0,0,null,null);--fpbh00 发票编码
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00','单病种除外耗材',0,0,null,null);--fpmc00 发票名称
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',REC.YBYL34,0,0,null,null);--fphjje 发票合计金额
LS_MXData:=LS_MXData||'';
LS_MXData:=LS_MXData||'';
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00','90',0,0,null,null);--fpbh00 发票编码
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00','单病种超标床位费',0,0,null,null);--fpmc00 发票名称
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',REC.YBYL33,0,0,null,null);--fphjje 发票合计金额
LS_MXData:=LS_MXData||'';
else
for MX in CUR_MX loop
LS_MXData:=LS_MXData||'';
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00',lpad(MX.XMBH00,2,'0'),0,0,null,null);--fpbh00 发票编码
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00',MX.XMMC00,0,0,null,null);--fpmc00 发票名称
LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',MX.XMJE00,0,0,null,null);--fphjje 发票合计金额
LS_MXData:=LS_MXData||'';
LS_MXNum:=nvl(LS_MXNum,0)+1;
end loop;
end if;
--电子票据请求报文调用his提供web服务 电子票据请求报文
--ZYSF_DZFP_0001BS34051384676325101
--9999管理员管理员1057217901_632510HIS9
LS_dzpjjkbw:=LS_dzpjjkbw||'';
LS_dzpjjkbw:=LS_dzpjjkbw||'';
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('eventid','ZYSF_DZFP_0001',0,0,null,null);--eventid
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('cjlybm','BS',0,0,null,null);--cjlybm
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('zyid00',REC.ZYID00,0,0,null,null);--zyid00
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('jzdh00',REC.JZDH00,0,0,null,null);--jzdh00
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('pjh000',REC.PJH000,0,0,null,null);--pjh000
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('bustype','01',0,0,null,null);--bustype
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('placecode',RYGBM.XKH000,0,0,null,null);--placecode
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('payee',RYGBM.ZWXM00,0,0,null,null);--payee
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('author',RYGBM.ZWXM00,0,0,null,null);--author
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('pzdyyg',RYGBM.YGBH00,0,0,null,null);--pzdyyg
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('czyks0',RYGBM.BMBH00,0,0,null,null);--czyks0
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('busno','01_'||REC.PJH000,0,0,null,null);--busno
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('print','0',0,0,null,null);--print
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('dyly00','DD',0,0,null,null);--dyly00
LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('ywhdbz','1',0,0,null,null);--ywhdbz 是否回调 1是0否
LS_dzpjjkbw:=LS_dzpjjkbw||'';
LS_dzpjjkbw:=LS_dzpjjkbw||'';
end loop;
if nvl(LS_ZXNum,0)=0 then
PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功
PERRMSG:='未找到有效发票信息的记录!';
return;
end if;
LS_FHCLOB:=''||LS_ZXData||LS_dzpjjkbw||LS_MXData||''; --返回报文CLOB类型
LS_ZXZT00:='1';--执行状态 1:成功 0:失败
LS_ZXNum:=1;--记录数据
LS_FHRQ00:=to_char(sysdate,'YYYYMMDD');--返回操作日期
LS_FHSJ00:=to_char(sysdate,'HH24:MI:SS');--返回操作时间
LS_JKFHLX:='9';--接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB
LS_JKCODE:='successful';--接口返回码(错误:failure 成功:successful)
--步骤9:修改中间表BM_JKRZ00
LS_MsgStr:='步骤9:修改中间表BM_JKRZ00';
update BM_JKRZ00 set
ZXZT00=LS_ZXZT00, --状态标志 0:失败 1:成功
MZZYBZ=LS_MZZYBZ, --门诊住院标志 0:门诊 1:住院
BRID00=LS_BRID00, --病人ID
DJH000=LS_DJH000, --单据号
CZY000=RYGBM.YGBH00,--操作员编码
CZYXM0=RYGBM.ZWXM00,--操作员姓名
DDLSH0=LS_DDLSH0,--订单流水号
CJLYBM=IN_CJLYBM, --厂家来源编码
QDCJBM=IN_QDCJBM, --渠道编码
FHRQ00=LS_FHRQ00, --返回操作日期
FHSJ00=LS_FHSJ00, --返回操作时间
JKFHLX=LS_JKFHLX, --接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB
JKCODE=LS_JKCODE, --接口返回码(错误:failure 成功:successful)
JKFHCS=LS_JKFHCS, --返回参数值
FHCLOB=LS_FHCLOB --返回报文CLOB类型
where JKRZID=PJKRZID;
--步骤10:过程出参赋值
LS_MsgStr:='步骤10:过程出参赋值';
PZXZT00:=LS_ZXZT00;--出参:返还状态 1:成功 0:失败
PRECNUM:=LS_ZXNum;--出参:返回记录数据
PJKFHLX:=LS_JKFHLX;--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB
PJKFHCS:=LS_JKFHCS;--出参:接口返回参数
exception
when no_data_found then
PERRMSG:=substr('住院通用接口发票信息获取失败!'||'错误位置:['||LS_MSGSTR||'] 错误原因:'||sqlerrm,1,250);
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
rollback;
when others then
PERRMSG:=substr('住院通用接口发票信息获取失败!'||'错误位置:['||LS_MSGSTR||'] 错误原因:'||sqlerrm,1,250);
PZXZT00:='0';--出参:返还状态 1:成功 0:失败
rollback;
end;
/
show error;
--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%